package com.pentofab.payrollmanagement.dao;

import java.util.ArrayList;
import java.util.HashMap;

import com.pentofab.payrollmanagement.dao.model.EsiPfBonus;
import com.pentofab.payrollmanagement.dao.model.PTSlab;
import com.pentofab.payrollmanagement.dao.model.SalaryAdvance;
import com.pentofab.payrollmanagement.dao.model.SalaryProfile;
import com.pentofab.payrollmanagement.dao.model.SalaryStracture;
import com.pentofab.payrollmanagement.exception.BusinessException;
import com.pentofab.payrollmanagement.exception.ExceptionMsg;

public interface SalaryDAO extends ExceptionMsg {

	public ArrayList<SalaryProfile> getSalaryProfiles() throws BusinessException;
	public void addSalaryProfile(SalaryProfile salaryProfile) throws BusinessException;
	public void modifySalaryProfile(SalaryProfile salaryProfile) throws BusinessException;
	public void deleteSalaryProfile(String profieName) throws BusinessException;
	
	public ArrayList<SalaryAdvance> getSalaryAdvance(String empId) throws BusinessException;
	public void appliForAdvance(SalaryAdvance salaryAdvance) throws BusinessException;
	public void recoverAmount(String empId,String rowNo,double amount) throws BusinessException;
	public void deleteSalaryAdvance(String empId,int rowNum) throws BusinessException;
	
	public ArrayList<PTSlab> getPTSlab() throws BusinessException;
	public void addPTSlab(String ptTaxAmount, String maxLimit) throws BusinessException;
	public void updatePTSlab(String ptTaxAmount, String maxLimit) throws BusinessException;
	public void deletePTSlab( String maxLimit) throws BusinessException;
	
	public ArrayList<String> getAllEmpSalaryStracture() throws BusinessException;
	public SalaryStracture getSalaryStractureForEmp(String empId) throws BusinessException;
	public void insertSalaryStracture(SalaryStracture salaryStracture) throws BusinessException;
	public void updateSalaryStracture(SalaryStracture salaryStracture) throws BusinessException;
	public ArrayList<HashMap<String, String>> getSalaryReport(String employeeId,String selyear,int selectedMonths) throws BusinessException;
	
	public EsiPfBonus getEsiPfBonus() throws BusinessException;
	public void setEsiPfBonus(EsiPfBonus esiPfBonus) throws BusinessException;
	public HashMap<String, SalaryStracture> computeSalaryForMonth(String startDate,String endDate,String empId,String company,String unit,String dept,String selyear, 
			int selectedMonths) throws Exception;
	public HashMap<String, String> getComputedSalary(String empId,String month,String year,String company,
			String dept,String unit,String design) throws Exception;

}
